// 这里面放的是对应的任务 , 如果你的数据是任务类型就要用到这里了

#pragma once

#include <iostream>
#include <functional>
#include <unistd.h>

// 2 . 任务可以是这样的函数指针 , 外部回调
//  函数包装器 , 里面放的就是任务 , 包装了一个函数指针 , 其它地方可以回调该函数
using task_t = std::function<void()>;

void DownLoad()
{
    std::cout << "我是一个下载的任务 !" << std::endl;
    sleep(3); // 模拟下载时间
}

// 这里以一个任务为例 , 所以不用管理了
// 1 . 任务可以是这样的类
class Task
{
public:
    Task() {}
    Task(int x, int y) : _x(x), _y(y)
    {
    }
    void Execute()
    {
        _result = _x + _y;
    }
    int X() { return _x; }
    int Y() { return _y; }
    int Result()
    {
        return _result;
    }

private:
    int _x;
    int _y;
    int _result;
};
